home *** CD-ROM | disk | FTP | other *** search
- * std.s standard
- * 一番単純なワイプルーチンのサンプル
- * ただ転送するだけ(ワイプでも何でもないような) / 最高速 = 0
- * by Mitsuky
-
-
- SPEED_MAX equ 0
-
- .offset 8 * 引き数
- _source_ptr: .ds.l 1
- _dest_ptr: .ds.l 1
- _speed: .ds.l 1
- _vdisp: .ds.l 1
-
-
-
- .text
- .even
-
- .dc.b 'WL10',$0d,$0a
- .dc.b 'ただ転送するだけ(ワイプでも何でもないような) / 最高速 = 0',$0d,$0a
- .dc.b ' by Mitsuky',$0d,$0a
- .dc.b $1a
- .even
-
- std:
- link a6,#0
- movem.l d1-d7/a0-a5,-(sp)
-
- move.l _speed(a6),d0 * 速度が負の時は
- bmi std_ask_speed * 速度設定可能範囲問い合わせ
- cmpi.l #SPEED_MAX,d0
- bhi std_err * 速度が設定範囲外
-
- move.l _vdisp(a6),d0 * 垂直同期待ちサブルーチンが負の時は
- bmi std_ask_vdisp * 描画完了までの時間問い合わせ
-
- movea.l _source_ptr(a6),a0 * a0.l = 転送元アドレス
- movea.l _dest_ptr(a6),a1 * a1.l = 転送先アドレス
- movea.l _vdisp(a6),a2 * a2.l = 垂直同期待ちサブルーチンアドレス
-
- jsr (a2)
-
- move.w #512*(512/64)-1,d7
- loop: movem.l (a0)+,d0-d6/a3
- movem.l d0-d6/a3,(a1)
- movem.l (a0)+,d0-d6/a3
- movem.l d0-d6/a3,32*1(a1)
- movem.l (a0)+,d0-d6/a3
- movem.l d0-d6/a3,32*2(a1)
- movem.l (a0)+,d0-d6/a3
- movem.l d0-d6/a3,32*3(a1)
- lea.l 32*4(a1),a1
- dbra d7,loop
-
-
- moveq.l #0,d0
- std_rts:
- movem.l (sp)+,d1-d7/a0-a5
- unlk a6
- rts
-
-
- **** ****
- std_err:
- moveq.l #-1,d0
- bra std_rts
-
-
- **** ****
- std_ask_speed:
- moveq.l #SPEED_MAX,d0
- bra std_rts
-
-
- **** ****
- std_ask_vdisp:
- moveq.l #1,d0
- bra std_rts
-
-